The Parallaxis language model was designed to allow structured parallel programming in a high
level language, similar to sequential Pascal or Modula-2. The compiler should
be machine-independent, so it can be used for a wide range of parallel architectures. In addition, it
should be useful in exploiting the parallel resources of any particular architecture satisfying the
basic machine model, in order to achieve optimal performance. Both goals (which might look
contradictory, at first) are achieved by a translation into a low level intermediate parallel
language which is processed by a machine-dependent interpreter or compiler. This flexible model
is restricted to SIMD structures; it combines the internal representation of the hardware structure
with the topology- or structure-specific algorithm to form a complete problem solution.
Thus, it is possible to specify number and arrangement of processing elements, as well as their
communication network in Parallaxis.
Here, we get a new meaning of the term structured. The whole problem solution is structured,
including the algorithm, as well as the architecture for which the algorithm is bound. Given this
semantics, it is necessary to include a machine description, if the language should not be
restricted to a single architecture that is implicitly assumed. An algorithm for the same problem
will look totally different if designed for a hypercube instead of a ring-topology. Besides, for a
certain problem there may be structures well suited and others that do not match very well. If
there is a choice (as for reconfigurable parallel systems), the architecture specification can be
used for creating the best matching architecture.
In this paper, I will address the language concepts supporting the Parallaxis user in
programming a SIMD computer on a high level of abstraction. I will not be concerned at this
point, however, what strategy or algorithm to apply in order to perform an efficient mapping
between a topology specified for a certain application and the topology provided by the
physical hardware structure. This problem is handled automatically on a lower operating system
level, transparent to the user. However, it will greatly affect the efficiency of an application
with heavy communication. H. J. Siegel developed efficient mapping algorithms for simulating
one topology on a different topology.
Corresponding to the machine model of a processor-network, controlled by a single control
unit, variables may be declared either for the control unit (using the declaration keyword
scalar), or for each of the PEs (using vector). Each variable is strictly typed, like in Modula-2,
so there may be no vector variables in an expression that is to be assigned to a scalar variable.
Vectors may be used inside explicitly marked parallel blocks or operations only while scalars
may also appear in parallel vector expressions (requiring a duplication or broadcast of that
particular value).